/*
 *
 *  Copyright (C) 2007-2020 SimplyCore, LLC
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 *
 *
 */

#include "usbd.h"

#if KERNEL_LT((0x1688+3672-0x24de),(0x1159+3118-0x1d81),(0x184c+3019-0x2408))
#error This module requires kernel version 2.6.15 or newer
#endif

#if !defined(CONFIG_USB) && !defined(CONFIG_USB_MODULE)
#error This module requires kernel to be compiled with USB support (CONFIG_USB)
#endif

#if KERNEL_LT((0xcc4+3675-0x1b1c),(0x2538+241-0x2621),(0x29f+624-0x50f)) && !\
defined(CONFIG_HOTPLUG)
#error\
 This module requires kernel to be compiled with hotplug support (CONFIG_HOTPLUG)
#endif

#if !defined(CONFIG_NET) && !defined(CONFIG_NET_MODULE)
#error\
 This module requires kernel to be compiled with networking support (CONFIG_NET)
#endif

#if KERNEL_LT_EQ((0x2e0+9170-0x26b0),(0xa9f+7110-0x265f),(0xbdc+4216-0x1c45)) &&\
 !defined(CONFIG_KOBJECT_UEVENT)
#error\
 This module requires kernel to be compiled with uevent support (CONFIG_KOBJECT_UEVENT)
#endif

#if !defined(CONFIG_UNIX) && !defined(CONFIG_UNIX_MODULE)
#error\
 This module requires kernel to be compiled with Unix domain sockets support (CONFIG_UNIX)
#endif
#ifdef _USBD_DEBUG_MEMORY_
atomic_t IIllIIllI=ATOMIC_INIT((0x104f+3803-0x1f2a));atomic_t IIlllIllI=
ATOMIC_INIT((0x225f+756-0x2553));atomic_t lIIlIIll=ATOMIC_INIT(
(0x144f+2820-0x1f53));atomic_t IIlIlllIl=ATOMIC_INIT((0xa60+4384-0x1b80));
#ifdef ATOMIC64_INIT
atomic64_t lllIIlII=ATOMIC64_INIT((0xdd4+5713-0x2425));
#endif
atomic_t lllllllI=ATOMIC_INIT((0x576+5946-0x1cb0));atomic_t lIIIlllll=
ATOMIC_INIT((0x7f2+5173-0x1c27));atomic_t lIlIIIIlI=ATOMIC_INIT(
(0x1c7b+520-0x1e83));atomic_t IIIIIllIl=ATOMIC_INIT((0x97c+3429-0x16e1));
atomic_t IlIIlIlII=ATOMIC_INIT((0x17d0+919-0x1b67));atomic_t IlIIIlIll=
ATOMIC_INIT((0x172c+2178-0x1fae));atomic_t llllIlIIl=ATOMIC_INIT(
(0x16af+255-0x17ae));atomic_t lllllIlIl=ATOMIC_INIT((0x3ff+4692-0x1653));
atomic_t IllllIII=ATOMIC_INIT((0x909+5318-0x1dcf));atomic_t llIIIlIlI=
ATOMIC_INIT((0xd6a+84-0xdbe));atomic_t IIIlIllll=ATOMIC_INIT((0x44c+4215-0x14c3)
);atomic_t lIIIIlll=ATOMIC_INIT((0x472+4260-0x1516));atomic_t IlllIllIl=
ATOMIC_INIT((0x24b+7844-0x20ef));
#endif 

size_t lllIIlI=32768;static int IIIIlIIl=(0x13f3+3813-0x22d8);module_param(
IIIIlIIl,int,(0x1f18+1620-0x256c));static int __init lIllIllIl(void){int IlIlI;
int lIIIllllI=(0x69a+8049-0x260b);
#ifdef _USBD_ENABLE_STUB_
int lllllIIII=(0x2d0+4128-0x12f0);
#endif
#ifdef _USBD_ENABLE_VHCI_
int IIIIllIll=(0x1342+3297-0x2023);
#endif
IlllI("\x75\x73\x62\x64\x5f\x69\x6e\x69\x74\x3a\x20\x2b\x2b" "\n");do
{struct sysinfo IlIIlIl;if(IIIIlIIl){IlllI(
"\x75\x73\x62\x64\x5f\x69\x6e\x69\x74\x3a\x20\x70\x72\x6f\x62\x65\x2d\x6f\x6e\x6c\x79\x20\x6d\x6f\x64\x65" "\n"
);IlIlI=(0x547+4193-0x15a8);break;}si_meminfo(&IlIIlIl);


if(IlIIlIl.totalram*IlIIlIl.mem_unit<=1LL*1024LL*1024LL*1024LL)
{lllIIlI=(0x779+7550-0x24d7)*(0x1e0c+822-0x1d42);}else if(IlIIlIl.totalram*
IlIIlIl.mem_unit<=2LL*1024LL*1024LL*1024LL)
{lllIIlI=(0xdf9+6148-0x25cd)*(0xe44+79-0xa93);}else if(IlIIlIl.totalram*IlIIlIl.
mem_unit<=4LL*1024LL*1024LL*1024LL)
{lllIIlI=(0xb16+4572-0x1cb2)*(0x9ec+4516-0x1790);}else
{lllIIlI=(0x1f02+1026-0x2284)*(0x9e0+3161-0x1239);}IlllI(
"\x75\x73\x62\x64\x5f\x69\x6e\x69\x74\x3a\x20\x73\x75\x67\x67\x65\x73\x74\x65\x64\x20\x6d\x61\x78\x20\x61\x6c\x6c\x6f\x63\x61\x74\x69\x6f\x6e\x20\x73\x69\x7a\x65\x20\x25\x6c\x75\x4b\x42" "\n"
,(unsigned long)lllIIlI/(0x21cf+2228-0x2683));IlIlI=llIIIIlII();if(IlIlI!=
(0x999+6132-0x218d)){IlllI(
"\x75\x73\x62\x64\x5f\x69\x6e\x69\x74\x3a\x20\x75\x73\x62\x64\x5f\x63\x64\x65\x76\x5f\x69\x6e\x69\x74\x5f\x6d\x6f\x64\x75\x6c\x65\x20\x66\x61\x69\x6c\x65\x64\x2e\x20\x45\x72\x72\x6f\x72\x20\x6e\x75\x6d\x62\x65\x72\x20\x25\x64" "\n"
,IlIlI);break;}lIIIllllI=(0x167+7901-0x2043);
#ifdef _USBD_ENABLE_STUB_
IlIlI=IIllllIIl();if(IlIlI!=(0x7a3+7859-0x2656)){IlllI(
"\x75\x73\x62\x64\x5f\x69\x6e\x69\x74\x3a\x20\x75\x73\x62\x64\x5f\x73\x74\x75\x62\x5f\x69\x6e\x69\x74\x5f\x6d\x6f\x64\x75\x6c\x65\x20\x66\x61\x69\x6c\x65\x64\x2e\x20\x45\x72\x72\x6f\x72\x20\x6e\x75\x6d\x62\x65\x72\x20\x25\x64" "\n"
,IlIlI);break;}lllllIIII=(0xf3c+1798-0x1641);
#endif
#ifdef _USBD_ENABLE_VHCI_
IlIlI=llIlIllll();if(IlIlI!=(0x186b+1325-0x1d98)){IlllI(
"\x75\x73\x62\x64\x5f\x69\x6e\x69\x74\x3a\x20\x75\x73\x62\x64\x5f\x76\x68\x63\x69\x5f\x69\x6e\x69\x74\x5f\x6d\x6f\x64\x75\x6c\x65\x20\x66\x61\x69\x6c\x65\x64\x2e\x20\x45\x72\x72\x6f\x72\x20\x6e\x75\x6d\x62\x65\x72\x20\x25\x64" "\n"
,IlIlI);break;}IIIIllIll=(0x163d+2659-0x209f);
#endif
}while((0xbcc+1508-0x11b0));if(IlIlI!=(0x7cf+1016-0xbc7)){
#ifdef _USBD_ENABLE_VHCI_
if(IIIIllIll){IIllllll();}
#endif
#ifdef _USBD_ENABLE_STUB_
if(lllllIIII){lIIlllIlI();}
#endif
if(lIIIllllI){lIllIIII();}}IlllI(
"\x75\x73\x62\x64\x5f\x69\x6e\x69\x74\x3a\x20\x2d\x2d" "\n");return IlIlI;}
static void __exit usbd_exit(void){if(IIIIlIIl){IlllI(
"\x75\x73\x62\x64\x5f\x65\x78\x69\x74\x3a\x20\x70\x72\x6f\x62\x65\x2d\x6f\x6e\x6c\x79\x20\x6d\x6f\x64\x65" "\n"
);return;}
#ifdef _USBD_ENABLE_VHCI_
IIllllll();
#endif
#ifdef _USBD_ENABLE_STUB_
lIIlllIlI();
#endif
lIllIIII();
#ifdef _USBD_DEBUG_MEMORY_
IIllIl("\x73\x74\x61\x74\x73\x3a" "\n");IIllIl(
"\x75\x72\x62\x20\x61\x6c\x6c\x6f\x63\x3a\x20\x25\x64" "\n",atomic_read(&
IIllIIllI));IIllIl("\x75\x72\x62\x20\x66\x72\x65\x65\x3a\x20\x25\x64" "\n",
atomic_read(&IIlllIllI));IIllIl(
"\x6d\x65\x6d\x20\x61\x6c\x6c\x6f\x63\x3a\x20\x25\x64" "\n",atomic_read(&
lIIlIIll));IIllIl("\x6d\x65\x6d\x20\x66\x72\x65\x65\x3a\x20\x25\x64" "\n",
atomic_read(&IIlIlllIl));
#ifdef ATOMIC64_INIT
IIllIl("\x6d\x65\x6d\x20\x73\x69\x7a\x65\x3a\x20\x25\x6c\x6c\x64" "\n",(long 
long)atomic64_read(&lllIIlII));
#endif
IIllIl("\x75\x72\x65\x71\x20\x63\x72\x65\x61\x74\x65\x3a\x20\x25\x64" "\n",
atomic_read(&lllllllI));IIllIl(
"\x75\x72\x65\x71\x20\x66\x72\x65\x65\x3a\x20\x25\x64" "\n",atomic_read(&
lIIIlllll));IIllIl(
"\x75\x72\x65\x71\x20\x64\x65\x73\x74\x72\x6f\x79\x3a\x20\x25\x64" "\n",
atomic_read(&lIlIIIIlI));IIllIl(
"\x74\x72\x61\x6e\x73\x61\x63\x74\x69\x6f\x6e\x20\x61\x6c\x6c\x6f\x63\x3a\x20\x25\x64" "\n"
,atomic_read(&IIIIIllIl));IIllIl(
"\x74\x72\x61\x6e\x73\x61\x63\x74\x69\x6f\x6e\x20\x64\x65\x73\x74\x72\x6f\x79\x3a\x20\x25\x64" "\n"
,atomic_read(&IlIIlIlII));IIllIl(
"\x76\x72\x65\x71\x20\x63\x72\x65\x61\x74\x65\x3a\x20\x25\x64" "\n",atomic_read(
&IlIIIlIll));IIllIl("\x76\x72\x65\x71\x20\x66\x72\x65\x65\x3a\x20\x25\x64" "\n",
atomic_read(&llllIlIIl));IIllIl(
"\x73\x74\x75\x62\x20\x63\x72\x65\x61\x74\x65\x3a\x20\x25\x64" "\n",atomic_read(
&lllllIlIl));IIllIl(
"\x73\x74\x75\x62\x20\x72\x65\x6d\x6f\x76\x65\x3a\x20\x25\x64" "\n",atomic_read(
&IllllIII));IIllIl(
"\x73\x74\x75\x62\x20\x64\x65\x73\x74\x72\x6f\x79\x3a\x20\x25\x64" "\n",
atomic_read(&llIIIlIlI));IIllIl(
"\x76\x73\x74\x75\x62\x20\x63\x72\x65\x61\x74\x65\x3a\x20\x25\x64" "\n",
atomic_read(&IIIlIllll));IIllIl(
"\x76\x73\x74\x75\x62\x20\x72\x65\x6d\x6f\x76\x65\x3a\x20\x25\x64" "\n",
atomic_read(&lIIIIlll));IIllIl(
"\x76\x73\x74\x75\x62\x20\x64\x65\x73\x74\x72\x6f\x79\x3a\x20\x25\x64" "\n",
atomic_read(&IlllIllIl));
#endif 
IlllI("\x75\x73\x62\x64\x5f\x65\x78\x69\x74" "\n");}module_init(lIllIllIl);
module_exit(usbd_exit);MODULE_LICENSE("\x47\x50\x4c");
